As servers become more and more powerful, it becomes ever easier to deploy multiple virtual machines (VMs) on one hardware server (e.g., a host server) for an SDN. In this manner one server can represent, from a user perspective, multiple servers (e.g., many virtual servers). When multiple VMs are deployed, connections between the VMs and the physical interfaces of the host server are configured using software switches—for example, vSwitches. vSwitches can be used for forwarding data packets between VMs and the physical interfaces. If only a few VMs are deployed, a single vSwitch may be sufficient to handle traffic amongst the VMs and the physical interfaces. However, when many VMs are present, multiple vSwitches may likewise be required. In such scenarios, VMs may be grouped by vSwitches according to functionality of the applications provided on the VMs.
For improvements in organization and ease of access to application(s) running on the VMs of the virtual network, deploying several vSwitches may be useful for a data center network administrator. General requirements for multiple vSwitches running on a host server include: ease of connection to the interfaces of different VMs; independent configuration of each vSwitch; and simple and flexible system resource management, including CPU resource, physical interfaces, memory, and other hardware allocation. Each vSwitch requires allocation of some physical system resources, the ability to control this allocation being of particular importance. In particular, resource competition amongst vSwitches must be considered, as well as competition with system applications. A vSwitch is able to process a packet received from a VM, another vSwitch, or a network (through a physical interface of the host server). For some situations, multiple vSwitches may be grouped together in some particular topology to act in concert, and therefore vSwitches require the capability of data forwarding with each other.
Current attempts to deploy software as a vSwitch require discrete data tables (e.g., OpenFlow tables) to dictate the data forwarding rules that will be followed for that particular vSwitch, including forwarding, packet processing, and any changes to be made to a packet. A packet processor is likewise configured for each vSwitch, which is often a CPU core dedicated to the vSwitch. Further, a protocol is necessary to run between the vSwitch and the controller. In contrast to a traditional switch, where the control plane is contained within the switch, the control plane of an SDN switch is located outside the switch—that is, the main network intelligence resides on a central controller running outside of the switch, and on a different server from the host. In this manner one controller is able to configure and manage multiple SDN switches, which are passive (e.g., do not require on-board network intelligence).
Deploying multiple vSwitches is growing increasingly common for accessing a multitude of VMs on a data center server. For cloud networking development, multiple vSwitches are necessary for accessing multiple VMs on a single host. Generally, as more VMs and vSwitches are introduced on a single host, greater system resources must be allocated, such as the number of CPU cores and the system memory. Conventionally, each vSwitch is instantiated as a unique software application in the host server (e.g., as a unique application), and requires dedicated CPU resources and system memory. Therefore as the number of vSwitches increases on the host server, the competition for system resources likewise increases. This increasing competition for system resources complicates system resource management, making the task of the network administrator more difficult when provisioning system resources.
Generally, the number of vSwitches on a host is limited by the number of CPU cores on the host. For example, if a vSwitch requires allocation of at least one CPU core for packet processing, the number of vSwitches that can be supported on a host will be less than the total number of CPU cores on the host. Therefore, system performance and efficiency may be greatly impacted even if the total traffic of data packets on the system is low, as CPU cores are requisitioned exclusively for independent vSwitches.